import { useCache } from '@/hooks/web/useCache'
import { useAxios } from '@/hooks/web/useAxios'

const request = useAxios()
const { wsCache } = useCache()

// 【查詢】公司列表
export const companyList = (data) => {
  return request.post({
    url: 'user/company/query',
    data
  })
}

// 【查詢】公司詳情
export const companyDetail = (data) => {
  return request.post({
    url: 'user/company/selectByTenantId',
    data,
    headersType: 'application/x-www-form-urlencoded'
  })
}

// 【保存】更新公司
export const updateCompany = (data) => {
  return request.post({
    url: 'user/company/updateCompany',
    data
  })
}

// 【刪除】刪除公司
export const deleteCompany = (data) => {
  return request.post({
    url: 'user/company/del',
    data,
    headersType: 'application/x-www-form-urlencoded'
  })
}

// 【保存】註冊公司
export const registerCompany = (data) => {
  return request.post({
    url: 'user/user/registerCompany',
    data
  })
}

// 【查詢】公司編號格式
export const getCurTenant = () => {
  return request.get({
    url: 'user/serialNo/getCurTenant'
  })
}

// 【查詢】公司編號格式規則
export const getRuleHelp = () => {
  return request.get({
    url: 'user/serialNo/getRuleHelp'
  })
}

// 【校驗】公司編號格式規則
export const validRule = (data) => {
  return request.post({
    url: 'user/serialNo/validRule',
    data
  })
}

// 【保存】公司編號格式規則
export const saveCodeFormat = (data) => {
  return request.post({
    url: 'user/serialNo/save',
    data
  })
}

//获取公司的设置，先取缓存
export const getSettings = async (): Promise<any> => {
  const key = 'ezlcp-tenantSettings'
  let data = wsCache.get(key)
  if (!data) {
    data = (await getSystemSettings()).data as any
    wsCache.set(key, data, { exp: 600 })
  }
  return data
}
// 【查詢】查询公司设置
export const getSystemSettings = () => {
  return request.get({
    url: 'user/settings/getSettingsTenant'
  })
}
// 【保存】修改公司设置
export const saveSystemSettings = (data) => {
  return request.put({
    url: 'user/settings/updateSettings',
    data
  })
}
/**
 *@author lxc
 *@description: 获取业务员
 *@param: null
 *@date: 2022-05-30 15:44:11
 **/
export const getSalesman = (data) => {
  return request.post({
    url: 'user/user/getByTenantId',
    data
  })
}

/**
 * @description 获取密码强度
 * @author Elwin ZHANG
 * @date 2023-04-11 11:54
 */
export const getPasswordStrength = (value: string) => {
  let level = 0
  if (!value) {
    return level
  }
  // 字符串中有数字，+1
  if (/[0-9]/.test(value)) {
    level++
  }
  // 字符串中有字母，+1
  if (/[a-zA-Z]/.test(value)) {
    level++
  }
  // 字符串中特殊符号，+1
  if (/[^0-9a-zA-Z_]/.test(value)) {
    level++
  }
  return level
}

/**
 * @author ly
 * @description: 上级修改下级密码
 * @param
 * @date 2022-06-24 11:17:14
 **/
export const updatePassword = (data) => {
  return request.post({
    url: 'user/user/updateLowerPassWord',
    data,
    headersType: 'application/x-www-form-urlencoded'
  })
}
